// src/index.ts

// 导出模块
export { DecryptModule } from './modules/decrypt/decrypt.module';
export { DecryptGuard } from './modules/decrypt/decrypt.guard';
export { StartupValidationModule } from './modules/decrypt/startup-validation.module';
export * from './config';
export * from './zsyz.module';
export * from './modules/auth/zsyz-token.service';
export * from './modules/auth/zsyz-token.guard';
export * from './modules/auth/license.interceptor';
export * from './common/base/base.response';

// 导出解密工具函数（避免与 utils 中的文件工具函数冲突）
export {
    decryptFile,
    validateAndDecrypt,
    type TimeInfo,
    type DecryptResult
} from './modules/decrypt/decrypt.utils';

// 导出工具函数
export * from './utils';

// 自动打印当前时间
// console.log(`当前时间: ${new Date().toLocaleString('zh-CN', { timeZone: 'Asia/Shanghai' })}`);

// 时间相关函数
export function getCurrentTime(): string {
    return new Date().toLocaleString('zh-CN', { timeZone: 'Asia/Shanghai' });
}

export function getCurrentDate(): string {
    return new Date().toLocaleDateString('zh-CN', { timeZone: 'Asia/Shanghai' });
}

export function getCurrentTimeStamp(): number {
    return Date.now();
}

// 安全的初始化函数，只在直接运行时执行
export function initializePackage(): void {
    try {
        const { validateAndDecrypt } = require('./modules/decrypt/decrypt.utils');
        const result = validateAndDecrypt();
        // console.log('解密后的 JSON 内容:', JSON.stringify(result.content, null, 2));
        // if (result.timeInfo) {
        //     console.log(`距离创建时间已经过去: ${result.timeInfo.formattedTime}`);
        //     console.log(`是否超过31天: ${result.timeInfo.isOverDays ? '是' : '否'}`);
        // }
    } catch (error: unknown) {
        console.error('❌ 错误:', error instanceof Error ? error.message : String(error));
        throw error; // 抛出错误而不是退出进程
    }
}

// 检测是否为直接运行（非作为模块导入）
if (require.main === module || process.env.NODE_ENV === 'development') {
    // 只在直接运行时才执行初始化
    try {
        initializePackage();
    } catch (error) {
        // 如果是作为独立包运行时才退出进程
        if (require.main === module) {
            process.exit(1);
        }
    }
}


